dados <- read_csv("/home/marianamendes/natalie_portman/data/natalie.csv")
## Parsed with column specification:
## cols(
## filme = col_character(),
## bilheteria = col_double()
## )
import_data("natalie_portman")
## Loading required package: rvest
## Loading required package: xml2
##
## Attaching package: 'rvest'
## The following object is masked from 'package:purrr':
##
## pluck
## The following object is masked from 'package:readr':
##
## guess_encoding
## Warning in rlang::eval_tidy(~as.numeric(gsub("[$|M]", "", BOXOFFICE)),
## <environment>): NAs introduced by coercion
filmes = read_imported_data()
filmes_total <- merge(filmes, dados, by.x="filme", by.y="filme")
A atriz escolhida foi Natalie Portman, uma atriz israelense, que nasceu no dia 9 de junho em 1981 (37 anos). Natalie começou a carreira muito cedo, aos 11 anos, quando atuou em The Professional no ano de 1994. Até seus 15 anos já havia participado de 5 filmes.
include_graphics('/home/marianamendes/natalie_portman/data/natalie_1996.jpg')
Até 1996 Natalie fez 5 filmes, todos eles com uma avaliação superior a 50 no RottenTomatoes, contudo com uma bilheteria não tão alta.
filmes_total %>% filter(ano < 1997) %>% ggplot(aes(x=filme, y=avaliacao)) +
geom_point(size=5) +
geom_segment(aes(x=filme,
xend=filme,
y=0,
yend=avaliacao)) +
labs(title="Natalie Portman até 1996",
subtitle="Avaliações pelo rotten tomatoes",
caption="source: mpg") +
theme(axis.text.x = element_text(angle=40, vjust=0.8))
Em 1999, quando tinha seus 18 anos, iniciou sua participação na saga Star Wars onde interpretou Padmé Amidala. O episódio I, The Phanton Menace, foi um sucesso de bilheteria, arrecadando mais de 800 milhões. Os outros dois episódios também foram bem recebidos pelo público, ambos com mais de 400 milhões nas bilheterias :). A saga foi de extrema importância para a jovem atriz, visto que foram os filmes que mais fizeram sucesso no cinema em toda sua carreira até agora.
include_graphics('/home/marianamendes/natalie_portman/data/sw.gif')
p <- filmes_total %>% count(avaliacao, bilheteria.y, ano, filme) %>% plot_ly(
x = ~ano,
y = ~bilheteria.y,
color = ~avaliacao,
text = ~filme,
type = "bar"
)
ggplotly(p)
## Warning: textfont.color doesn't (yet) support data arrays
## Warning: textfont.color doesn't (yet) support data arrays
A partir desse gráficos conseguimos ver (ao passar o mouse em cima das barras), que os filmes da saga Star Wars são outliers em relação às bilheterias, apesar de não terem sido tão bem avaliados no rotten tomatoes.
anos <- filmes_total %>% group_by(ano) %>% summarise(count=n(), media=mean(avaliacao), media_bi=mean(bilheteria.y))
ggplot(anos, aes(x=ano)) +
geom_line(aes(y=media)) +
labs(title="Avaliações no através dos anos",
subtitle="Avaliações de filmes no rotten tomatoes",
y="Avaliação") + # title and caption
theme(axis.text.x = element_text(angle = 90, vjust=0.5), # rotate x axis text
panel.grid.minor = element_blank()) # turn off minor grid
Agora iremos observar as obras de forma agrupada, no gráfico abaixo conseguimos observar alguns grupos se formando…
p = filmes_total %>%
ggplot(aes(x = "filmes", y = bilheteria.y, label = filme)) +
geom_jitter(width = .05, alpha = .3, size = 3) +
labs(x = "")
ggplotly(p)
Usando avaliação para analisar, é possível observar 4 ou 3 grupos definidos… Iremos ver isso melhor mais adiante.
m_transformado = filmes_total %>%
mutate(b = log10(bilheteria.y))
summary(m_transformado %>% select(bilheteria.y, b))
## bilheteria.y b
## Min. : 291 Min. :2.464
## 1st Qu.: 1143825 1st Qu.:6.057
## Median : 33663600 Median :7.527
## Mean : 97615157 Mean :6.602
## 3rd Qu.: 92994200 3rd Qu.:7.967
## Max. :813711800 Max. :8.910
Agora utilizando as duas variáveis disponíveis, avaliação e bilheteria, vamos observar como os filmes se dividem melhor, em quantos grupos.
n_clusters = 3
km = m_transformado %>%
select(b, avaliacao) %>%
kmeans(centers = n_clusters, nstart = 20)
agrupado = km %>%
augment(m_transformado)
m_transformado = filmes_total %>%
mutate(bilh_scaled = as.vector(scale(log10(bilheteria.y))),
av_scaled = as.vector(scale(avaliacao)))
agrupa_bilh_avaliacao<- function(df, k){
df %>%
select(bilh_scaled, av_scaled) %>%
kmeans(centers = k,
nstart = 20) %>%
augment(df) %>%
mutate(.cluster = as.character(.cluster))
}
agrupamentos = tibble(k = 1:6) %>%
mutate(agrupamento = map(k, ~ agrupa_bilh_avaliacao(m_transformado, .))) %>%
unnest(agrupamento)
agrupamentos %>%
ggplot(aes(
x = avaliacao,
y = bilheteria.y,
label = filme,
colour = .cluster
)) +
geom_point(size = 2, alpha = .8) +
facet_wrap( ~ k) +
scale_y_log10()
Vendo as 6 representações acima é notável que utilizando 3 clusters, grupos, os filmes ficam mais bem definidos, ou seja “mais pertecentes” a um determinado conjunto de outros filmes. Agora vamos melhorar a representação usando 3 grupos.
km = m_transformado %>%
select(bilh_scaled, av_scaled) %>%
kmeans(centers = n_clusters, nstart = 20)
agrupado = km %>%
augment(m_transformado)
agrupado %>%
ggplot(aes(x = av_scaled, y = bilh_scaled, color = .cluster)) +
geom_point(size = 2)
p = agrupado %>%
ggplot(aes(x = avaliacao, y = bilheteria.y, color = .cluster, label = filme)) +
geom_point(size = 2) +
scale_y_log10()
ggplotly(p)
Pronto. Usando esse gráfico podemos observar também qual pontinho representa que filme, basta colocar o mouse em cima… Agora vamos analisar.